package com.entity;

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import java.lang.reflect.InvocationTargetException;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.beanutils.BeanUtils;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.enums.FieldFill;
import com.baomidou.mybatisplus.enums.IdType;


/**
 * 卫生检查实体类
 * 对应数据库中的weishengjiancha表
 * 使用MyBatis-Plus的注解进行ORM映射
 * 实现Serializable接口以支持对象的序列化
 * 
 * @author 
 * @email 
 * @date 2023-06-28 12:23:14
 */
@TableName("weishengjiancha")
public class WeishengjianchaEntity<T> implements Serializable {
	// 序列化ID
	private static final long serialVersionUID = 1L;


	/**
	 * 默认无参构造方法
	 */
	public WeishengjianchaEntity() {
		
	}
	
	/**
	 * 泛型构造方法
	 * 使用Apache Commons BeanUtils复制属性
	 * 用于对象间属性值的快速拷贝
	 * 
	 * @param t 源对象
	 */
	public WeishengjianchaEntity(T t) {
		try {
			BeanUtils.copyProperties(this, t);
		} catch (IllegalAccessException | InvocationTargetException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 主键id
	 * 使用@TableId注解标识为数据库主键
	 */
	@TableId
	private Long id;
	
	/**
	 * 检查编号
	 * 用于唯一标识一次卫生检查记录
	 * 通常是一个格式化的字符串，如"WS"+时间戳
	 */
	private String jianchabianhao;
	
	/**
	 * 楼栋
	 * 标识被检查宿舍所在的楼栋
	 */
	private String loudong;
	
	/**
	 * 宿舍号
	 * 标识被检查的宿舍
	 */
	private String sushe;
	
	/**
	 * 检查评分
	 * 卫生检查的结果分数，通常是0-100之间的整数
	 */
	private Integer jianchapingfen;
	
	/**
	 * 检查时间
	 * 记录卫生检查的执行日期
	 * 使用@JsonFormat注解指定日期的格式化方式
	 * 使用@DateTimeFormat注解处理前端传入的日期格式
	 */
	@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd")
	@DateTimeFormat(pattern="yyyy-MM-dd")		
	private Date jianchashijian;
	
	/**
	 * 宿管姓名
	 * 记录执行检查的宿管姓名
	 * 替代了之前的宿管账号(suguanzhanghao)字段
	 */
	private String suguanxingming;
	
	/**
	 * 备注
	 * 记录检查的详细说明和备注信息
	 */
	private String beizhu;
	
	/**
	 * 记录创建时间
	 * 系统自动生成，记录数据库记录的创建时间
	 */
	@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
	@DateTimeFormat
	private Date addtime;

	/**
	 * 获取创建时间
	 * @return 创建时间
	 */
	public Date getAddtime() {
		return addtime;
	}
	
	/**
	 * 设置创建时间
	 * @param addtime 创建时间
	 */
	public void setAddtime(Date addtime) {
		this.addtime = addtime;
	}

	/**
	 * 获取主键ID
	 * @return 主键ID
	 */
	public Long getId() {
		return id;
	}

	/**
	 * 设置主键ID
	 * @param id 主键ID
	 */
	public void setId(Long id) {
		this.id = id;
	}
	
	/**
	 * 设置检查编号
	 * @param jianchabianhao 检查编号
	 */
	public void setJianchabianhao(String jianchabianhao) {
		this.jianchabianhao = jianchabianhao;
	}
	
	/**
	 * 获取检查编号
	 * @return 检查编号
	 */
	public String getJianchabianhao() {
		return jianchabianhao;
	}
	
	/**
	 * 设置楼栋
	 * @param loudong 楼栋
	 */
	public void setLoudong(String loudong) {
		this.loudong = loudong;
	}
	
	/**
	 * 获取楼栋
	 * @return 楼栋
	 */
	public String getLoudong() {
		return loudong;
	}
	
	/**
	 * 设置宿舍号
	 * @param sushe 宿舍号
	 */
	public void setSushe(String sushe) {
		this.sushe = sushe;
	}
	
	/**
	 * 获取宿舍号
	 * @return 宿舍号
	 */
	public String getSushe() {
		return sushe;
	}
	
	/**
	 * 设置检查评分
	 * @param jianchapingfen 检查评分
	 */
	public void setJianchapingfen(Integer jianchapingfen) {
		this.jianchapingfen = jianchapingfen;
	}
	
	/**
	 * 获取检查评分
	 * @return 检查评分
	 */
	public Integer getJianchapingfen() {
		return jianchapingfen;
	}
	
	/**
	 * 设置检查时间
	 * @param jianchashijian 检查时间
	 */
	public void setJianchashijian(Date jianchashijian) {
		this.jianchashijian = jianchashijian;
	}
	
	/**
	 * 获取检查时间
	 * @return 检查时间
	 */
	public Date getJianchashijian() {
		return jianchashijian;
	}
	
	/**
	 * 设置宿管姓名
	 * @param suguanxingming 宿管姓名
	 */
	public void setSuguanxingming(String suguanxingming) {
		this.suguanxingming = suguanxingming;
	}
	
	/**
	 * 获取宿管姓名
	 * @return 宿管姓名
	 */
	public String getSuguanxingming() {
		return suguanxingming;
	}
	
	/**
	 * 设置备注
	 * @param beizhu 备注
	 */
	public void setBeizhu(String beizhu) {
		this.beizhu = beizhu;
	}
	
	/**
	 * 获取备注
	 * @return 备注
	 */
	public String getBeizhu() {
		return beizhu;
	}

}
